package fun.werfamily.wf.order.core.infrastructure.dataobject;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * wf_order
 * @author 
 */
@Data
public class OrderDO implements Serializable {
    /**
     * 主键ID
     */
    private Long id;

    /**
     * 订单号
     */
    private String orderNo;

    /**
     * 渠道编码，ZY001-自营
     */
    private String channelCode;

    /**
     * 订单状态:0.待付款，1.交易关闭(用户)，2.交易关闭(系统，)3.待发货，4.待收货，5.交易完成，6.退款中，7.已退款
     */
    private Integer orderStatus;

    /**
     * 支付状态：0.未支付，1.付款中，2.已支付
     */
    private Integer payStatus;

    /**
     * 商品总金额
     */
    private BigDecimal goodsAmount;

    /**
     * 订单优惠金额
     */
    private BigDecimal orderDiscountAmount;

    /**
     * 应付款金额
     */
    private BigDecimal orderAmount;

    /**
     * 订单实际支付金额
     */
    private BigDecimal orderRealPayAmount;

    /**
     * 订单商品总数量
     */
    private Integer goodsNum;

    /**
     * 支付费用,跟支付方式的配置相关
     */
    private BigDecimal payFee;

    /**
     * 运费
     */
    private BigDecimal shippingFee;

    /**
     * 支付方式: AliPay-支付宝，WechatPay-微信支付，UnionPay-银联
     */
    private String payType;

    /**
     * 用户id
     */
    private String userCode;

    /**
     * 用户名称
     */
    private String userName;

    /**
     * 用户手机号
     */
    private String userMobile;

    /**
     * 收货人的姓名
     */
    private String consignee;

    /**
     * 收货人的手机
     */
    private String mobile;

    @ApiModelProperty("收货人的省份")
    private String provinceName;

    @ApiModelProperty("收货人的城市")
    private String cityName;

    @ApiModelProperty("收货人的地区")
    private String areaName;

    /**
     * 收货人的详细地址
     */
    private String detailAddress;

    /**
     * 地址标签，如家里，公司等
     */
    private String addressTag;

    /**
     * 银行交易流水
     */
    private String tradeNo;

    /**
     * 订单支付单号 (支付中心交易流水号)
     */
    private String payNo;

    /**
     * 订单确认时间
     */
    private Date confirmTime;

    /**
     * 支付时间
     */
    private Date payTime;

    /**
     * 是否展示，0-否，1-是
     */
    private Boolean isShow;

    /**
     * 更新时间
     */
    private Date updateTime;

    /**
     * 订单生成时间
     */
    private Date createTime;

    /**
     * 创建者
     */
    private String createBy;

    /**
     * 更新人
     */
    private String updateBy;

    private Integer isDeleted;

    private static final long serialVersionUID = 1L;
}